<?php
// +----------------------------------------------------------------------
// | Powered By ThinkPHP 5.0.12
// +----------------------------------------------------------------------
// | Copyright (c) 2018 http://www.bojuwang.net All rights reserved.
// +----------------------------------------------------------------------
// | Date：2018-1
// +----------------------------------------------------------------------
// | Author: ZhengLuwei <512711380@qq.com>
// +----------------------------------------------------------------------

namespace app\bjwlmanager\controller;

use think\Db;

class Manager extends ManagerBasic
{
    /**
     * 默认加载管理员信息列表
     */
    public function index()
    {
        $managerList=Db::name('manager')->order('id desc')->paginate(15,false,['query'=>request()->param()]);
        $this->assign('managerList',$managerList);
        unset($managerList);
        return view();
    }
    /**
     * 渲染添加管理员的页面
     */
    public function add()
    {
        return view();
    }
    /**
     * 添加新的管理员信息
     */
    public function addsave()
    {
        $managername=input('post.managername');
        $password=input('post.password');
        $mobile=input('post.mobile');
        $email=input('post.email');
        $nickname=input('post.nickname');

        $info=array();
        $info['manager_name']=$managername;
        $info['password']=md5($password);
        $info['mobile']=$mobile;
        $info['email']=$email;
        $info['manager_nickname']=$nickname;
        
        $result=Db::name('manager')->insertGetId($info);
        unset($info);

        if($result>0)
        {
           json_msg(0,'添加成功');
        }
        else{
           json_msg(1,'添加失败');
        }
    }
    /**
     * 编辑保存管理员信息
     */
    public function editsave()
    {
        $managerId=input('post.managerid');
        $mobile=input('post.mobile');
        $email=input('post.email');
        $nickname=input('post.nickname');

        $managerInfo=array();
        $managerInfo['mobile']=$mobile;
        $managerInfo['email']=$email;
        $managerInfo['manager_nickname']=$nickname;
        
        $result=Db::name('manager')->where('id',$managerId)->update($managerInfo);
        unset($managerInfo);

        if($result==0)
        {
           json_msg(0,'您没有修改任何资料哦');
        }
        else{
           json_msg(0,'更新成功');
        }
        
    }
    /**
     * 渲染编辑会员信息
     */
    public function edit()
    {
        $managerId=input('get.id');
        $managerInfo=Db::name('manager')->where('id',$managerId)->find();
        $this->assign('managerInfo',$managerInfo);
        return view();
    }
    /**
     * 加载修改密码页面
     */
    public function changepassword()
    {
        $userId=input('get.id');
        $userInfo=Db::name('manager')->where('id',$userId)->find();
        $this->assign('userInfo',$userInfo);
        return view();
    }

    /**
     * 更新登录密码
     */
    public function changepasswordsave()
    {
        $managerId=input('post.userid');
        $password=input('post.password');

        if(!isset($managerId)){
           json_msg(1,'请求参数错误');
        }

        if(!isset($password)){
           json_msg(0,'密码保持不变');
        }else{
            $result=Db::name('manager')->where('id',$managerId)->update(['password'=>md5($password)]);
            if($result==0)
            {
               json_msg(1,'修改失败');
            }
            else{
               json_msg(0,'修改成功');
            }
        }

        
    }

    /**
     * 删除指定管理员
     */
    public function del()
    {
        $managerId=input('post.managerId');
        if(!isset($managerId))
        {
           json_msg(1,'请求参数错误');
        }
        $result=Db::name('manager')->where('id',$managerId)->delete();
        if($result==0)
        {
           json_msg(1,'删除失败');
        }
        else
        {
           json_msg(0,'删除成功');
        }
    }

    /**
     * 停用管理员
     */
    public function stop()
    {
        $memberId=input('post.userId');
        if(!isset($memberId))
        {
           json_msg(1,'请求参数错误');
        }
        $result=Db::name('manager')->where('id',$memberId)->setField('status',1);
        if($result==0)
        {
           json_msg(1,'状态未更改');
        }
        else
        {
           json_msg(0,'该管理员已停用');
        }
    }

    /**
     * 启用管理员
     */
    public function start()
    {
        $memberId=input('post.userId');
        if(!isset($memberId))
        {
           json_msg(1,'请求参数错误');
        }
        $result=Db::name('manager')->where('id',$memberId)->setField('status',0);
        if($result==0)
        {
           json_msg(1,'状态未更改');
        }
        else
        {
           json_msg(0,'该管理员已启用');
        }
    }

    /**
     * 日志管理列表
     */
    public function log()
    {
        $managerId=session('managerId');

        $logList=Db::name('manager_log')->where('manager_id',$managerId)->order('id desc')->paginate(15,false,['query'=>request()->param()]);
        $this->assign('logList',$logList);
        unset($logList);
        return view();
    }

    /**
     * 删除单条日志
     * @param int $id 日志ID
     */
    public function logDel()
    {
        $id=input('post.id');
        $result=Db::name('manager_log')->where('id',$id)->delete();
        if($result==0){
           json_msg(1,'删除失败');
        }else{
           json_msg(0,'删除成功');
        }
    }

    /**
     * 删除全部管理员日志
     */
    public function logDelAll()
    {
        $ids=input('post.ids');
        //$arr=array_filter(explode(',',$ids));
        $result=Db::name('manager_log')->where('id','in',$ids)->delete();
        if($result)
        {
            json_msg(0,'删除成功');
        }
        json_msg(1,'删除失败');
        
    }

    /**
     * 渲染角色列表页面
     */
    public function role()
    {
        $list=Db::name('manager_role')->order('id desc')->paginate(15,false,['query'=>request()->param()]);
        $this->assign('roleList',$list);
        unset($list);
        return view();
    }

    /**
     * 渲染添加角色的页面
     */
    public function roleadd()
    {
        return view();
    }
    
    /**
     * 添加角色信息
     * @param string $rolename 角色名称
     * @param int $roletype 角色类型
     */
    public function roleaddsave()
    {
        $rolename=input('post.rolename');
        $roletype=input('post.roletype');
        if(!isset($rolename) || !isset($roletype))
        {
            json_msg(1,'请求参数错误');
        }
        $data=array();
        $data=[
            'role_name'=>$rolename,
            'role_type'=>$roletype,
            'is_sys'=>0
        ];
        $result=Db::name('manager_role')->insertGetId($data);
        unset($data);
        if($result>0){
            json_msg(0,'添加成功');
        }else
        {
            json_msg(1,'添加失败');
        }
    }

    /**
     * 渲染角色编辑页面
     */
    public function roleedit()
    {
        $id=input('get.id');
        $roleInfo=Db::name('manager_role')->where('id',$id)->find();
        $this->assign('roleInfo',$roleInfo);
        return view();
    }

    /**
     * 更新角色信息
     * @param int $id 角色ID
     * @param string $rolename 角色名称
     * @param int $roletype 角色类型
     */
    public function roleeditsave()
    {
        $id=input('post.id');
        $rolename=input('post.rolename');
        $roletype=input('post.roletype');
        if(!isset($id) || !isset($rolename) || !isset($roletype))
        {
            json_msg(1,'请求参数错误');
        }
        $data=array();
        $data=[
            'role_name'=>$rolename,
            'role_type'=>$roletype
        ];
        $result=Db::name('manager_role')->where('id',$id)->update($data);
        unset($data);
        if($result==0){
            json_msg(0,'信息没有改变');
        }elseif($result==1)
        {
            json_msg(0,'修改成功');
        }
        json_msg(1,'系统500错误');
    }

    /**
     * 删除角色，删除角色将删除角色下面的全部管理员
     * @param int $id 角色ID
     */
    public function roledel()
    {
        $id=input('post.id');
        $result=Db::name('manager_role')->where('id',$id)->delete();
        if($result==0){
            json_msg(1,'删除失败');
         }else{
            json_msg(0,'删除成功');
         }
    }

    public function getTree($data){
        $ret=$this->reSort($data);
    	return $ret;
    }
    public function reSort($data,$parent_id=0,$class_layer=0){
    	static $ret = array();
    	foreach ($data as $k => $v){
    		if($v['parent_id']==$parent_id){
    			$v['class_layer'] = $class_layer;
    			$ret[] = $v;
    			$this->reSort($data,$v['id'],$class_layer+1);
    		}
    	}
    	return $ret;
    }

    public function nav()
    {
        //echo $this->action;

        if(!check_role('channel_main','Show'))
        {
            $this->error('暂无操作权限','Index/index');
        }
        $list=Db::name('manager_nav')->order('id desc')->select();
        $list=$this->getTree($list);

        foreach($list as $k=>$v)
        {
            if($v['parent_id']!=0)
            {
                $list[$k]['title']=str_repeat('&nbsp;',$v['class_layer']*4).'|—&nbsp;'.$v['title'];
                if($list[$k]['link_url'])
                {
                    $list[$k]['link_url']='(链接：'.$v['link_url'].')';
                }
            }
        }

        $this->assign('navList',$list);
        unset($list);
        return view();
    }

}